package com.swu.pad.reflection.controller;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpSession;

import org.apache.xmlbeans.impl.jam.mutable.MPackage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.huaban.analysis.jieba.JiebaSegmenter;
import com.swu.pad.reflection.entity.ReflectionScore;
import com.swu.pad.reflection.entity.RftDimTipTemplate;
import com.swu.pad.reflection.entity.RftDimTips;
import com.swu.pad.reflection.entity.RftFbItemScore;
import com.swu.pad.reflection.entity.RftFeedbackItem;
import com.swu.pad.reflection.entity.RftFeedbackTemplate;
import com.swu.pad.reflection.service.ReflectionService;
import com.swu.pad.reflection.service.RftDimTipsService;
import com.swu.pad.system.entity.User;
import com.swu.pad.util.DocToSentencesClassUtil;


@Controller
@RequestMapping(value = "/reflection")
public class ReflectionController {

	@Autowired
	private ReflectionService reflectionService;
	@Autowired
	private RftDimTipsService rftDimTipsService;
	
//	@Autowired
//	private CommentQuestionDao commentQuestionDao ;
	
    
	//保存或者修改某个反思维度写作提示语
	@ResponseBody
	@RequestMapping(value = "/saveRftDimTip")
	public String saveRftDimTip(RftDimTips rftDimTips) {
		RftDimTips newReflectionTemplate=rftDimTipsService.saveRftDimTip(rftDimTips);
		return "success";
	}
	
	
	
	    //获取所有反思维度
		@ResponseBody
		@RequestMapping(value = "/getAllReflectionDims")
		public List<RftDimTips> getAllReflectionDims() {
	      List<RftDimTips> ReflectionTemplates=new ArrayList<RftDimTips>();
	      ReflectionTemplates=rftDimTipsService.getAllReflectionDims();
		  return ReflectionTemplates;
		}
	
	 
		//获取某次作业下反思维度 的信息
		@ResponseBody
		@RequestMapping(value = "/getRftDimScore")
		public Map<String,Object> getRftDimScore(String assignmentPadId) {
	      List<RftDimTips> ReflectionTemplates=new ArrayList<RftDimTips>();
	      Map<String,Object> res=rftDimTipsService.getRftDimScore(assignmentPadId);
		  return res;
		}
	    
		//保存某学生在 某个反思作业下 某反思维度 的得分
		@ResponseBody
		@RequestMapping(value = "/saveReflectionScore")
		public String saveReflectionScore(ReflectionScore reflectionScore) {
          reflectionService.saveReflectionScore(reflectionScore);
		  return "success";
		}
		
		//保存某学生在 某个反思作业下 某反思维度 的得分
		@ResponseBody
		@RequestMapping(value = "/modifySentenceClass")
		public String modifySentenceClass(String sentenceId,String sentenceClass) {
          reflectionService.modifySentenceClass(sentenceId,sentenceClass);
		  return "success";
		}
			    
		//获取某学生在 某个反思作业下 某反思维度 的得分
		@ResponseBody
		@RequestMapping(value = "/getStuRftScore")
		public Map<String, Object> getStuRftScore(String studentId,String assignmentId) {
	      Map<String,Object> res=reflectionService.getStuRftScore(studentId,assignmentId);
		  return res;
		}
		
		
		/**
		 * 获取文本  句子  所有 类别  以及 相关内容
		 * @param padId
		 * @return
		 * @throws Exception 
		 * 默认最后一个版本  pad 内容
		 */
		@ResponseBody
		@RequestMapping(value = "/getTextSentenceClass")
		public Map<String,Object> getTextSentenceClass(String padId,String activityId,HttpSession session) throws Exception {
			Map<String,Object> resMap=new HashMap<String, Object>();
			User user = (User) session.getAttribute("user");
			//service 层获取 文本分类结果
			Map<String,Object> senceClassInfo=reflectionService.getTextSentenceClass(padId, activityId,user);
			return senceClassInfo;
		}
		
		/**
		 * 查询 作者句子   所有 类别  以及 相关内容
		 * @param padId
		 * @return
		 * @throws Exception 
		 * 
		 */
		@ResponseBody
		@RequestMapping(value = "/querySentences")
		public Map<String,Object> querySentences(String padId,String activityId,HttpSession session) throws Exception {
			JiebaSegmenter jbSeg = new JiebaSegmenter();
			Map<String,Object> resMap=new HashMap<String, Object>();
			User user = (User) session.getAttribute("user");
			//service 层获取 文本分类结果
			Map<String,Object> senceClassInfo=reflectionService.querySentences(padId, activityId,user);
			return senceClassInfo;
		}
		
		
		/**
		 * 保存 或者 修改 反思写作反馈模板
		 * @param saveOrUpdaterftFbTemplate
		 * @return
		 */
		@ResponseBody
		@RequestMapping(value = "/saveOrUpdaterftFbTemplate")
		public String saveOrUpdaterftFbTemplate(RftFeedbackTemplate rtfFeedbackTemplate) {
			reflectionService.saveOrUpdaterftFbTemplate(rtfFeedbackTemplate);
			return "success";
		}
	
		
		/**
		 * 保存 或者 修改 反思写作提示语模板
		 * @param saveOrUpdaterftFbTemplate
		 * @return
		 */
		@ResponseBody
		@RequestMapping(value = "/saveOrUpdaterftRftDimTipTemplate")
		public String saveOrUpdaterftRftDimTipTemplate(RftDimTipTemplate rftDimTipTemplate) {
			reflectionService.saveOrUpdaterftRftDimTipTemplate(rftDimTipTemplate);
			return "success";
		}
		/**
		 * 获取反思写作提示语模板列表
		 * @return
		 */
		@ResponseBody
		@RequestMapping(value = "/getRftDimTipTemplates")
		public List<RftDimTipTemplate> getRftDimTipTemplates() {
			return reflectionService.getRftDimTipTemplates();
		}
		
		/**
		 * 获取反思写作反馈模板列表
		 * @return
		 */
		@ResponseBody
		@RequestMapping(value = "/getRftFbTemplates")
		public List<RftFeedbackTemplate> getRftFbTemplates() {
			return reflectionService.getRftFbTemplates();
		}
		
		/**
		 * 删除反思写作 反馈模板
		 * @param templateId
		 * @return
		 */
		@ResponseBody
		@RequestMapping(value = "/deleteRftFbTemplate")
		public String deleteRftFbTemplate(String templateId) {
			reflectionService.deleteRftFbTemplate(templateId);
			return "success";
		}
		/**
		 * 删除 一个反思写作提示语 模板
		 * @param templateId
		 * @return
		 */
		@ResponseBody
		@RequestMapping(value = "/deleteRftDimTipTemplate")
		public String deleteRftDimTipTemplate(String templateId) {
			reflectionService.deleteRftDimTipTemplate(templateId);
			return "success";
		}
		
		/**
		 * 删除反思写作 反馈模板
		 * @param templateId
		 * @return
		 */
		@ResponseBody
		@RequestMapping(value = "/getClassInfo")
		public  List<List<String>>  getClassInfo() {
			return DocToSentencesClassUtil.getClassInfos();
		}
		/**
		 * 保存 或 修改  反思写作反馈模板的 条目
		 * @param commentQuestion
		 * @return
		 */
		@ResponseBody
		@RequestMapping(value = "/saveOrUpdateRftFbItem")
		public String saveOrUpdateRftFbItem(RftFeedbackItem rftFeedbackItem) {
			         reflectionService.saveOrUpdateRftFbItem(rftFeedbackItem);
			    	 return "success";
		}
		
		/**
		 * 获取 某一个 反思写作反馈模板的 条目
		 * @param commentQuestion
		 * @return
		 */
		@ResponseBody
		@RequestMapping(value = "/getRftFbItems")
		public List<RftFeedbackItem> getRftFbItems(String templateId) {
			   return  reflectionService.getRftFbItems(templateId);
		}
		
		/**
		 * 删除反思写作 提示语  条目
		 * @param templateId
		 * @return
		 */
		@ResponseBody
		@RequestMapping(value = "/deleteRftTipsItem")
		public String deleteRftTipsItem(String itemId) {
			reflectionService.deleteRftTipsItem(itemId);
			return "success";
		}
		
		
		
		
		/**
		 * 删除反思写作 反馈 条目
		 * @param templateId
		 * @return
		 */
		@ResponseBody
		@RequestMapping(value = "/deleteRftFbItem")
		public String deleteRftFbItem(String itemId) {
			reflectionService.deleteRftFbItem(itemId);
			return "success";
		}
		
		/**
		 * 获取 某一个 反思写作作业 的反馈模板的 条目
		 * @param assignmentId
		 * @return
		 */
		@ResponseBody
		@RequestMapping(value = "/getRftFbTptItems")
		public Map<String,Object> getRftFbTptItems(String assignmentId) {
			   return  reflectionService.getRftFbTptItems(assignmentId);
		}
		
		/**
		 * 获取 某一个 反思写作提示语 模板的 条目
		 * @param commentQuestion
		 * @return
		 */
		@ResponseBody
		@RequestMapping(value = "/getRftDimTips")
		public List<RftDimTips> getRftDimTips(String templateId) {
			   return  reflectionService.getRftDimTips(templateId);
		}
		
		/**
		 * 保存一个反馈打分
		 * @param commentQuestion
		 * @return
		 */
		@ResponseBody
		@RequestMapping(value = "/saveRftFbItemScore")
		public String saveRftFbItemScore(RftFbItemScore rftFbItemScore) {
			     reflectionService.saveRftFbItemScore(rftFbItemScore);
			     return "success";
		}
		
		/**
		 * 保存一个感受反馈
		 * @param feeling
		 * @return
		 */
		@ResponseBody
		@RequestMapping(value = "/saveRftFbFeeling")
		public String saveRftFbFeeling(RftFbItemScore rftFbFeeling) {
			     reflectionService.saveRftFbFeeling(rftFbFeeling);
			     return "success";
		}
		
		
		
}
